C#简单的绘图器 您所在的位置:网站首页 cad 矢量图 GDI 调用 C#简单的绘图器

C#简单的绘图器

2023-09-22 01:20| 来源: 网络整理| 查看: 265

#这是自己学习做的简单绘图器,大家可以参考下下! 2.2开发环境: 开发平台:Microsoft Windows 10 开发工具:采用Visual Studio 2017来进行系统开发。

2.3需求规定: 该程序能基本完成绘制基础图形的基本要求。我们考虑,应与题目相结合,除了具备题目所说的4项基本功能要实现的,还需增加一些有创意功能,如在文件选项栏中保存图片功能,编辑选项栏中新增撤销,重做这两项,分别实现上一步和下一步的操作。在关于栏中新增查看作者的信息,及工具栏中有橡皮擦和显示当地时间的贴心功能。

设计要求: 1)设计菜单选项,可以选择画笔颜色以及所画形状,如椭圆、三角、正方型等。 2)设计按钮,可以将绘画的内容擦除,并进行重画。 3)可以任意画图,也可以使用菜单上的选项画具体形状的图形。 *4)具体图形的大小可以通过对话框进行设定。 详细设计 1.主页面 在这里插入图片描述

2.文件 (1)新建:新建窗口 (2)保存:保存图形 (3)退出:退出窗口 3.编辑 (1)撤销:实现上一步操作 (2)重做:实现下一步操作 (3)清除画像:实现画像的擦除。

4.帮助 (1)关于:显示作者的信息

自由绘制 (1)圆和椭圆:实现圆与椭圆的绘制,位置和大小,颜色,画线等都可自由设置。 (2)正方形和矩形:实现正方形与矩形的绘制,位置和大小,颜色,画线等都可自由设置。 (3)三角形:实现三角形的绘制,位置和大小,颜色,画线等都可自由设置。 (4)无规则画画:实现无规则的绘制,位置和大小,颜色,画线等都可自由设置。工具栏(两行):如上图所示,第一栏有能实现颜色的选择,橡皮擦的功能。第二栏有能实现图形的选择,线条粗细的选择,图形的放大与缩小功能。状态栏:点击一下可以显示本地时间。系统设计 3.1总体设计 3.1.1基本思路: 总体设计的目的就是要回答“概括地说,系统应该如何去实现?”对于这个问题,结合自身的选题,也就是需要我们设计出一个完善的模型,让程序员与软件设计人员清楚绘图器的系统结构和软件结构。 3.1.2遇到的问题及解决方法:重新绘图时,我一开始没想到,总是出现系统程序错误,要求中断程序。 解决方法:可以再新建一层画布,这样就可以利用清除画像后,新建画布后又可以选择图案进行绘制啦。画三角形,发现利用简单调用 g.DrawPolygon(pen[x], p);是不行的,现在是动态画三角形的问题。困扰了我许久。 解决方法:在鼠标移动功能下,先把当前鼠标移动的点赋给末尾节点EndPoint,也就是EndPoint.X = e.X; EndPoint.Y = e.Y; 在鼠标释放功能下,执行以下功能: Point CurrentPoint = new Point(e.X, e.Y); Point p1 = new Point(StartPoint.X, StartPoint.Y); Point p2 = new Point(2*StartPoint.X- CurrentPoint.X, CurrentPoint.Y); Point p3 = new Point(EndPoint.X, EndPoint.Y); Point[] p = { p1, p2, p3 }; g.DrawPolygon(pen[x], p);选择粗细问题,Combox中用了foreach,每次下拉总会增加相同的选项 解决办法:在foreach语句前加上 toolStripComboBox1.Items.Clear();利用其Clear方法来清空。 4.利用timer控件想在窗口底部显示出来,发现时间不能正常显示 解决办法:触发toolStripLabel1_Click事件,也就是点击其功能。 5.在设置颜色的时候,发现自身的画笔设置数目多了一个,导致数组越界。 解决方法:设置画笔尽量数量大于现有的数量。list或relist中没有对象时仍然点击撤销或者重做,导致程序出现错误,出现功能错乱。 解决方法:在执行时检查对象数目,当最后一个对象释放后,控件Enable属性设为false。橡皮擦功能:一开始我是调用Clear()函数和设置pictureBox1.Image = null;把一下子是把所有图案给擦除了。 解决方法:利用白线画笔来覆盖: pictureBox1.Enabled = true; x = 8; toolStripButtonGum.BackColor = Color.SkyBlue; pictureBox1.Cursor = Cursors.Cross; d = 3; 3.2功能设计 1.文件 (1)新建:新建窗口 (2)保存:保存图形 (3)退出:退出窗口 2.编辑 (1)撤销:实现上一步操作 (2)重做:实现下一步操作 (3)清除画像:实现画像的擦除。 3.帮助 (1)关于:显示作者的信息 4.自由绘制 (1)圆和椭圆:实现圆与椭圆的绘制,位置和大小,颜色,画线等都可自由设置。 (2)正方形和矩形:实现正方形与矩形的绘制,位置和大小,颜色,画线等都可自由设置。 (3)三角形:实现三角形的绘制,位置和大小,颜色,画线等都可自由设置。 (4)无规则画画:实现无规则的绘制,位置和大小,颜色,画线等都可自由设置。

(一)菜单 在这里插入图片描述

(二)工具栏 第一栏有能实现颜色的选择,橡皮擦的功能。第二栏有能实现图形的选择,线条粗细的选择,图形的放大与缩小功能。

在这里插入图片描述

(三)方法 (1)GetLineWidth()方法:实现钢笔的粗线,进行选择,默认粗细设置为一磅。 ChangeColor()方法:实现颜色的改变 (2)绘制各个图形的方法:矩形,三角形,椭圆,圆,正方形,线 (3)DrawPicture()方法:各项绘图按键选择的总和,同时将此时的图像push到list里,用于后面撤销操作。 在这里插入图片描述

(四)事件 (1)pictureBox1_MouseDown事件:当鼠标按下去是,获取点坐标,并分别赋值给StartPoint.X , StartPoint.Y ; EndPoint.X , EndPoint.Y ;同时将此时的图像push到list里,用于后面撤销操作。 (2)pictureBox1_MouseMove事件:分别对自由绘制选项栏各个功能去绘制图形,进行拖拉到适合的位置和大小。 (3) pictureBox1_MouseUp事件:用于最终绘制出自由绘制选项栏各个功能的图形。 在这里插入图片描述

4.1源程序清单 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Drawing.Imaging; namespace CC { public partial class Form1 : Form { Graphics g; Graphics graphics;//Graphics类封装了一个GDI+绘图图面,提供将对象绘制到显示到设备的方法(画板) Image image; //Image 就是个图像,不能实例化, Bitmap canvas; //Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成。 //Bitmap 是用于处理由像素数据定义的图像的对象。(画纸) Point StartPoint; Point EndPoint; Stack list = new Stack(); Stack relist = new Stack(); Pen[] pen = new Pen[9]; int x,t,b=8,d=5;//x从0-8表示可选的9种颜色;t从0-4表示可选的5种画图方法; //b表示可放大或者缩小的倍数;d表示自由绘制时选择的功能。 float penf; //penf表示绘制时候线的粗细,默认值为1磅 string z1, z2;//z1表示描述图形的形状,z2表示描述图形的颜色 bool ok0 = false, ok1=false, ok2=false,ok3=false;//设置四个启动标志 public Form1() { InitializeComponent(); } public float GetLineWidth() { switch (toolStripComboBox1.Text) { case "0.5磅": return 0.5f; case "1磅": return 1.0f; case "1.25磅": return 1.25f; case "1.5磅": return 1.5f; case "3磅": return 3.0f; default: return 1.0f; } } public void ChangeColor()//改变颜色的方法 { penf = GetLineWidth(); pen[0] = new Pen(Color.Red,penf); pen[1] = new Pen(Color.Yellow, penf); pen[2] = new Pen(Color.Blue, penf); pen[3] = new Pen(Color.Green, penf); pen[4] = new Pen(Color.Black, penf); pen[5] = new Pen(Color.Purple, penf); pen[6] = new Pen(Color.Orange, penf); pen[7] = new Pen(Color.Pink, penf); pen[8] = new Pen(Color.White,penf); } public void DrawPicture() { canvas = new Bitmap(image); list.Push(canvas); 撤销ToolStripMenuItem.Enabled = true; try { switch (t) { case 0: DrawCircle(); break; case 1: DrawTriangle(); break; case 2: DrawRectangle(); break; case 3: DrawSquare(); break; case 4: DrawEllispe(); break; case 5: DrawLine(); break; default: MessageBox.Show("你还没有选择"); break; } } catch { MessageBox.Show("绘制失败"); } } private Rectangle MakeRectangle(Point p1, Point p2) { int top, left, bottom, right; top = p1.Y p2.X ? p1.X : p2.X;//计算矩形右下角点的x坐标 return (new Rectangle(left, top, right - left, bottom - top));//返回矩形 } public void DrawTriangle() //画三角形方法 { ChangeColor(); Point[] p = new Point[3]; p[0] = new Point(20 * b, 20 * b); p[1] = new Point(30 * b, 20 * b); p[2] = new Point(20 * b, 40 * b); g.DrawPolygon(pen[x], p); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } public void DrawCircle()//画圆方法 { ChangeColor(); int centre_x = 10,centre_y = 10; int R = 2; g.DrawEllipse(pen[x], (centre_x - R)*b, (centre_y - R) * b, (centre_x + R) * b, (centre_y +R) * b); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } public void DrawEllispe()//画椭圆的方法 { ChangeColor(); g.DrawEllipse(pen[x], pictureBox1.Width /64 *b, pictureBox1.Height / 64 * b, pictureBox1.Width / 32 * b, pictureBox1.Height / 32 * b); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } public void DrawRectangle()//画矩形的方法 { ChangeColor(); Rectangle r4 = new Rectangle(pictureBox1.Width/64 * b, pictureBox1.Height/64 * b, pictureBox1.Width/32 * b, pictureBox1.Height/32 * b); g.DrawRectangle(pen[x], r4); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } public void DrawSquare()//画正方形方法 { ChangeColor(); Rectangle r5 = new Rectangle(8 * b, 8 * b, 8 * b, 8 * b); g.DrawRectangle(pen[x], r5); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } public void DrawLine() { ChangeColor(); g.DrawLine(pen[x], pictureBox1.Width / 64 * b, pictureBox1.Height / 64 * b, pictureBox1.Width / 32 * b, pictureBox1.Height / 32 * b); pictureBox1.Update();//立即重画,即擦除 pen[x].Dispose(); } //鼠标按下 private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { canvas = new Bitmap(image); list.Push(canvas); 撤销ToolStripMenuItem.Enabled = true; if (e.Button == MouseButtons.Left) { StartPoint.X = e.X; StartPoint.Y = e.Y; EndPoint.X = e.X; EndPoint.Y = e.Y; } switch (d) { case 0: ok0 = true; break; case 1: ok1 = true; break; case 2: ok2 = true; break; case 3: ok3 = true; break; default:MessageBox.Show("选择错误"); break; } } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { penf = GetLineWidth(); ChangeColor(); if (ok0&&d==0) { Rectangle r1 = MakeRectangle(StartPoint, EndPoint);//计算重画区域 r1.Height += 2; r1.Width += 2;//区域增大些 pictureBox1.Invalidate(r1);//擦除上次鼠标移动时画的图形,r1为擦除区域 pictureBox1.Update();//立即重画,即擦除 Graphics g = pictureBox1.CreateGraphics(); EndPoint.X = e.X; EndPoint.Y = e.Y; r1 = MakeRectangle(StartPoint, EndPoint);//计算椭圆新位置 g.DrawEllipse(pen[x], r1);//在新位置画椭圆 } if (ok1 && d == 1) { Rectangle r2 = MakeRectangle(StartPoint, EndPoint); r2.Height += 2; r2.Width += 2;//区域增大些 pictureBox1.Invalidate(r2);//擦除上次鼠标移动时画的图形,r1为擦除区域 pictureBox1.Update();//立即重画,即擦除 Graphics g = pictureBox1.CreateGraphics(); EndPoint.X = e.X; EndPoint.Y = e.Y; r2 = MakeRectangle(StartPoint, EndPoint); g.DrawRectangle(pen[x], r2); } if (ok2 && d == 2) { EndPoint.X = e.X; EndPoint.Y = e.Y; } if (ok3&&d==3) { StartPoint.X = e.X; StartPoint.Y = e.Y; g.SmoothingMode = SmoothingMode.AntiAlias;//消除锯齿 g.DrawLine(pen[x], EndPoint, StartPoint); EndPoint.X = StartPoint.X; EndPoint.Y = StartPoint.Y; } } //鼠标释放 private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { ChangeColor(); switch (d) { case 0: EndPoint.X = e.X; EndPoint.Y = e.Y; Rectangle r1 = MakeRectangle(StartPoint, EndPoint); g.DrawEllipse(pen[x], r1); ok0 = false; break; case 1: EndPoint.X = e.X; EndPoint.Y = e.Y; Rectangle r2 = MakeRectangle(StartPoint, EndPoint); g.DrawRectangle(pen[x], r2); ok1= false; break; case 2: Point CurrentPoint = new Point(e.X, e.Y); Point p1 = new Point(StartPoint.X, StartPoint.Y); Point p2 = new Point(2*StartPoint.X- CurrentPoint.X, CurrentPoint.Y); Point p3 = new Point(EndPoint.X, EndPoint.Y); Point[] p = { p1, p2, p3 }; g.DrawPolygon(pen[x], p); ok2 = false; break; case 3: ok3 = false; break; default: MessageBox.Show("选择错误"); break; } pictureBox1.Image = image; } private void textBox1_MouseClick(object sender, MouseEventArgs e) { MessageBox.Show("所输入正数8以下为缩小倍数,8以上为放大倍数"); } private void textBox1_MouseEnter(object sender, EventArgs e) { textBox1.Text = null; } private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) { 关于ToolStripMenuItem.BackColor = Color.SkyBlue; (new Author()).ShowDialog(); } private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { 退出ToolStripMenuItem.BackColor = Color.Orange; MessageBox.Show("你将退出本程序!"); Application.Exit(); } private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { 保存ToolStripMenuItem.BackColor = Color.Orange; SaveFileDialog file = new SaveFileDialog(); file.Filter = "png(*png)|*.png"; if (image != null) { if (file.ShowDialog() == DialogResult.OK) { string fn = file.FileName; image.Save(fn, ImageFormat.Bmp); MessageBox.Show("保存成功"); } } } private void Red_ButtonClick(object sender, EventArgs e) { x = 0; z2 = "红色"; } private void Yellow_ButtonClick(object sender, EventArgs e) { x = 1; z2 = "黄色"; } private void Blue_ButtonClick(object sender, EventArgs e) { x = 2; z2 = "蓝色"; } private void Green_Click(object sender, EventArgs e) { x = 3; z2 = "绿色"; } private void Black_ButtonClick(object sender, EventArgs e) { x = 4; z2 = "黑色"; } private void Purple_ButtonClick(object sender, EventArgs e) { x = 5; z2 = "紫色"; } private void 橙色ToolStripMenuItem_Click(object sender, EventArgs e) { 橙色ToolStripMenuItem.BackColor = Color.Orange; x = 6; z2 = "橙色"; } private void 粉红色ToolStripMenuItem_Click(object sender, EventArgs e) { 粉红色ToolStripMenuItem.BackColor = Color.Pink; x = 7; z2 = "粉红色"; } private void toolStripSplitButtonCircle_ButtonClick(object sender, EventArgs e) { t = 0; DrawPicture(); z1 = "圆"; } private void toolStripSplitButtonTriangle_ButtonClick(object sender, EventArgs e) { t = 1; DrawPicture(); z1 = "三角形"; } private void toolStripSplitButtonRectangle_ButtonClick(object sender, EventArgs e) { t = 2; DrawPicture(); z1 = "长方形"; } private void toolStripSplitButtonSquare_ButtonClick(object sender, EventArgs e) { t = 3; DrawPicture(); z1 = "正方形"; } private void toolStripSplitButtonEllispe_ButtonClick(object sender, EventArgs e) { t = 4; DrawPicture(); z1 = "椭圆"; } private void toolStripComboBox1_Click(object sender, EventArgs e) { List list= new List() { "0.5磅", "1.0磅", "1.25磅", "1.5磅", "3磅" }; //foreach (string v in toolStripComboBox1.Items) //{ // if (!list.Contains(v)) // { // list.Add(v); // } //} toolStripComboBox1.Items.Clear(); foreach (string s in list) { toolStripComboBox1.Items.Add(s); } } private void toolStripSplitButtonLine_ButtonClick(object sender, EventArgs e) { t = 5; DrawPicture(); z1 = "线"; } private void toolStripButtonGum_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; x = 8; toolStripButtonGum.BackColor = Color.SkyBlue; pictureBox1.Cursor = Cursors.Cross; d = 3; } private void Form1_Load(object sender, EventArgs e) { graphics = pictureBox1.CreateGraphics(); pictureBox1.BackColor = Color.White; image = new Bitmap(pictureBox1.Width, pictureBox1.Height); g = Graphics.FromImage(image); g.Clear(Color.White); graphics.Clear(Color.White); } private void 新建ToolStripMenuItem_Click(object sender, EventArgs e) { 新建ToolStripMenuItem.BackColor = Color.Orange; graphics = pictureBox1.CreateGraphics(); pictureBox1.BackColor = Color.White; image = new Bitmap(pictureBox1.Width, pictureBox1.Height); g = Graphics.FromImage(image); g.Clear(Color.White); pictureBox1.Refresh(); g.Clear(Color.White); graphics.Clear(Color.White); } private void 撤销ToolStripMenuItem_Click_1(object sender, EventArgs e) { 撤销ToolStripMenuItem.BackColor = Color.Pink; if (list.Count != 0) { Bitmap b2 = new Bitmap(image); relist.Push(b2); canvas = list.Pop(); graphics = Graphics.FromImage(canvas); image = canvas; g.DrawImage(canvas, 0, 0, pictureBox1.Size.Width, pictureBox1.Size.Height); 重做ToolStripMenuItem.Enabled = true; } if (list.Count 重做ToolStripMenuItem.BackColor = Color.Pink; if (relist.Count != 0) { canvas = relist.Pop();//弹出 出栈 Bitmap b2 = new Bitmap(image); list.Push(b2);//推入 进栈 image = canvas; graphics = Graphics.FromImage(canvas); pictureBox1.Image = canvas; 撤销ToolStripMenuItem.Enabled = true; g.DrawImage(canvas, 0, 0, pictureBox1.Size.Width, pictureBox1.Size.Height); if (relist.Count 清除画像ToolStripMenuItem.BackColor = Color.Pink; g.Clear(Color.White); graphics.Clear(Color.White); pictureBox1.Image = null; textBox1.Text = null; pictureBox1.Cursor = Cursors.Default; } private void toolStripLabel1_Click(object sender, EventArgs e) { toolStripLabel1.Text = Convert.ToString(System.DateTime.Now); } private void toolStripButton2_Click(object sender, EventArgs e) { try { pictureBox1.Refresh(); b = Convert.ToInt32(textBox1.Text); if (b > 8) { textBox1.Text = "将在原画上以各参数乘以" + b + "放大,请重新选择颜色和图形!"; } } catch { MessageBox.Show("你输入非法字符串,请输入正数"); } } private void toolStripButton3_Click(object sender, EventArgs e) { try { pictureBox1.Refresh(); b = Convert.ToInt32(textBox1.Text); if (b MessageBox.Show("你输入非法字符串,请输入正数"); } } private void 圆和椭圆ToolStripMenuItem_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; textBox1.Text = null; d = 0; } private void 长方形和矩形ToolStripMenuItem_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; textBox1.Text = null; d = 1; } private void 三角形ToolStripMenuItem1_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; textBox1.Text = null; d = 2; } private void 无规则画画ToolStripMenuItem_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; textBox1.Text = null; d = 3; } private void ButtonStart_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; textBox1.Text = "您选的是" + z1 + "和" + z2 +"\r\n"+ "成功绘制" + z1; pictureBox1.Image = image; } } }

##功能实现 一、菜单 1.文件 (1)新建:实现新建功能,同时创建画板

private void 新建ToolStripMenuItem_Click(object sender, EventArgs e) { 新建ToolStripMenuItem.BackColor = Color.Orange; graphics = pictureBox1.CreateGraphics(); pictureBox1.BackColor = Color.White; image = new Bitmap(pictureBox1.Width, pictureBox1.Height); g = Graphics.FromImage(image); g.Clear(Color.White); pictureBox1.Refresh(); g.Clear(Color.White); graphics.Clear(Color.White); }

(2)保存:实现保存功能,将保存文件类型限定为png。

private void 保存ToolStripMenuItem_Click(object sender, EventArgs e) { 保存ToolStripMenuItem.BackColor = Color.Orange; SaveFileDialog file = new SaveFileDialog(); file.Filter = "png(*png)|*.png"; if (image != null) { if (file.ShowDialog() == DialogResult.OK) { string fn = file.FileName; image.Save(fn, ImageFormat.Bmp); MessageBox.Show("保存成功"); } } }

(3)退出:实现退出功能,用exit方法退出程序,并设置提示语。

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { 退出ToolStripMenuItem.BackColor = Color.Orange; MessageBox.Show("你将退出本程序!"); Application.Exit(); }

2.编辑 (1)撤销:将当前图像push进relist中 以便后面的重做操作,将之前list中储存的图像释放 出来, 并赋给image,就可以实现后台的image也随图像的释放而改变, g.DrawImage()方法将释放的图像画出来,if的作用可以使得当list中没有图像储存时,撤销按键将不可用。

private void 撤销ToolStripMenuItem_Click_1(object sender, EventArgs e) { 撤销ToolStripMenuItem.BackColor = Color.Pink; if (list.Count != 0) { Bitmap b2 = new Bitmap(image); relist.Push(b2); canvas = list.Pop(); graphics = Graphics.FromImage(canvas); image = canvas; g.DrawImage(canvas, 0, 0, pictureBox1.Size.Width, pictureBox1.Size.Height); 重做ToolStripMenuItem.Enabled = true; } if (list.Count < 1) { 撤销ToolStripMenuItem.Enabled = false; textBox1.Text = "已经到最后一步"; } }

(2)重做:调用Pop()方法把relist中上一次图像弹出,再将image推进list中,把canvas释放的图像赋值image,就可以实现后台的image也随图像的释放而改变, g.DrawImage()方法将释放的图像画出来,if的作用可以使得当relist中没有图像储存时,重做按键将不可用。

private void 重做ToolStripMenuItem_Click(object sender, EventArgs e) { 重做ToolStripMenuItem.BackColor = Color.Pink; if (relist.Count != 0) { canvas = relist.Pop();//弹出 出栈 Bitmap b2 = new Bitmap(image); list.Push(b2);//推入 进栈 image = canvas; graphics = Graphics.FromImage(canvas); pictureBox1.Image = canvas; 撤销ToolStripMenuItem.Enabled = true; g.DrawImage(canvas, 0, 0, pictureBox1.Size.Width, pictureBox1.Size.Height); if (relist.Count < 1) { 重做ToolStripMenuItem.Enabled = false; textBox1.Text="已经到最后一步"; } } }

(3)清除画像:通过白色背景色填充来清除画像,同时把pictureBox1.Image 设置为null; textBox1.Text 设置为null;将鼠标形状回复为默认的Default。

private void 清除画像ToolStripMenuItem_Click(object sender, EventArgs e) { 清除画像ToolStripMenuItem.BackColor = Color.Pink; g.Clear(Color.White); graphics.Clear(Color.White); pictureBox1.Image = null; textBox1.Text = null; pictureBox1.Cursor = Cursors.Default; }

3.帮助 (1)关于 新建一个Author窗口,显示作者基本信息。 4.自由绘制 (1)圆和椭圆:实现圆与椭圆的绘制,位置和大小,颜色,画线等都可自由设置。 (2)正方形和矩形:实现正方形与矩形的绘制,位置和大小,颜色,画线等都可自由设置。 (3)三角形:实现三角形的绘制,位置和大小,颜色,画线等都可自由设置。 (4)无规则画画:实现无规则的绘制,位置和大小,颜色,画线等都可自由设置。 二、工具栏(两行): 如上图所示,第一栏有能实现颜色的选择,橡皮擦的功能。第二栏有能实现图形的选择,线条粗细的选择,图形的放大与缩小功能。 (1)橡皮擦按键:利用白线画笔来覆盖图像。

private void toolStripButtonGum_Click(object sender, EventArgs e) { pictureBox1.Enabled = true; x = 8; toolStripButtonGum.BackColor = Color.SkyBlue; pictureBox1.Cursor = Cursors.Cross; d = 3; }

(2)放大与缩小:通过设置一个变量b,在对话框中输入一个整数来进行图案的放大缩小,所输入正数8以下为缩小倍数,8以上为放大倍数。

private void toolStripButton2_Click(object sender, EventArgs e) { try { pictureBox1.Refresh(); b = Convert.ToInt32(textBox1.Text); if (b > 8) { textBox1.Text = "将在原画上以各参数乘以" + b + "放大,请重新选择颜色和图形!"; } } catch { MessageBox.Show("你输入非法字符串,请输入正数"); } } private void toolStripButton3_Click(object sender, EventArgs e) { try { pictureBox1.Refresh(); b = Convert.ToInt32(textBox1.Text); if (b


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有